package com.xingchi.framework.common.model;

/**
 * 结果返回对象工厂
 *
 * @author xingchi
 * @date 2022/8/30 19:56
 * @modified xingchi
 */
public class Result {

    /**
     * 请求成功
     *
     * @param <T>       返回值参数
     * @return          成功状态
     */
    public static <T> BaseDTO<T> ok() {
       return new BaseDTO<>();
    }

    /**
     * 请求成功，返回数据
     *
     * @param data      数据载荷
     * @param <T>       返回载荷类型
     * @return          响应数据
     */
    public static <T> BaseDTO<T> ok(T data) {
       return new BaseDTO<>(data);
    }

    /**
     * 请求成功
     *
     * @param code      响应状态码
     * @param data      数据载荷
     * @param <T>       载荷数据类型
     * @return          返回code，数据
     */
    public static <T> BaseDTO<T> ok(BaseCode code, T data) {
       return new BaseDTO<>(code, data);
    }

    /**
     * 程序运行失败
     *
     * @param code      状态码
     * @param <T>       数据类型
     * @return          失败错误码
     */
    public static <T> BaseDTO<T> fail(BaseCode code) {
       return new BaseDTO<>(code);
    }

    /**
     * 程序运行失败
     *
     * @param code      状态码
     * @param <T>       数据类型
     * @param data      失败响应数据
     * @return          失败错误码
     */
    public static <T> BaseDTO<T> fail(BaseCode code, T data) {
        return new BaseDTO<>(code, data);
    }


}
